HTML5 видеокадр захватить в растровое изображение - PullRequest
5 голосов
/ 15 ноября 2011

Я получил этот скрипт:

function capture(video, scaleFactor) {
    if(scaleFactor == null){
        scaleFactor = 1;
    }
    var w = video.videoWidth * scaleFactor;
    var h = video.videoHeight * scaleFactor;
    var canvas = document.createElement('canvas');
    canvas.width  = w;
    canvas.height = h;
    var ctx = canvas.getContext('2d');
    ctx.drawImage(video, 0, 0, w, h);


    return canvas;
} 


function shoot(){
    var video  = document.getElementById(videoId);
    var output = document.getElementById('output');
    var canvas = capture(video, scaleFactor);
    canvas.onclick = function(){
        window.open(this.toDataURL());
    };
    snapshots.unshift(canvas);
    output.innerHTML = '';
    for(var i=0; i<1; i++){
        output.appendChild(snapshots[i]);
    }

}

Что я хочу сделать, это экспортировать снимок в растровое изображение.Я читал, что могу использовать эту строку:

canvas.toDataURL('image/jpeg');

Но я не знаю, где ее добавить.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

ctx.drawImage (видео, 0, 0, ш, ч); canvas.toDataURL (...)

toDataURL вернет вам строку, которая обычно содержит кодированное в base64 изображение (файл). Вы можете отобразить его в теге изображения с помощью image. Или вы можете использовать JavaScript, чтобы делать все, что вы хотите ...

0 голосов
/ 15 ноября 2011

Передать его в window.open

canvas.onclick = function () {
    window.open(canvas.toDataURL('image/png'));
};

Полный пример: http://www.nihilogic.dk/labs/canvas2image/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...